using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._SpatialStatisticsTools._ModelingSpatialRelationships
{
    /// <summary>
    /// <para>Generate Spatial Weights Matrix</para>
    /// <para>Constructs a spatial weights matrix (.swm) file to represent the spatial relationships among features in a dataset.</para>
    /// <para>构造空间权重矩阵 （.swm） 文件以表示数据集中要素之间的空间关系。</para>
    /// </summary>    
    [DisplayName("Generate Spatial Weights Matrix")]
    public class GenerateSpatialWeightsMatrix : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateSpatialWeightsMatrix()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_Feature_Class">
        /// <para>Input Feature Class</para>
        /// <para>The feature class for which spatial relationships of features will be assessed.</para>
        /// <para>将评估要素空间关系的要素类。</para>
        /// </param>
        /// <param name="_Unique_ID_Field">
        /// <para>Unique ID Field</para>
        /// <para>An integer field containing a different value for every feature in the input feature class. If you don't have a Unique ID field, you can create one by adding an integer field to your feature class table and calculating the field values to equal the FID or OBJECTID field.</para>
        /// <para>一个整数字段，其中包含输入要素类中每个要素的不同值。如果没有唯一 ID 字段，则可以通过向要素类表添加整数字段并计算字段值以等于 FID 或 OBJECTID 字段来创建一个字段。</para>
        /// </param>
        /// <param name="_Output_Spatial_Weights_Matrix_File">
        /// <para>Output Spatial Weights Matrix File</para>
        /// <para>The full path for the spatial weights matrix file (.swm) you want to create.</para>
        /// <para>要创建的空间权重矩阵文件 （.swm） 的完整路径。</para>
        /// </param>
        /// <param name="_Conceptualization_of_Spatial_Relationships">
        /// <para>Conceptualization of Spatial Relationships</para>
        /// <para><xdoc>
        ///   <para>Specifies how spatial relationships among features are conceptualized.</para>
        ///   <bulletList>
        ///     <bullet_item>Inverse distance—The impact of one feature on another feature decreases with distance.</bullet_item><para/>
        ///     <bullet_item>Fixed distance—Everything within a specified critical distance of each feature is included in the analysis; everything outside the critical distance is excluded.</bullet_item><para/>
        ///     <bullet_item>K nearest neighbors—The closest k features are included in the analysis; k is a specified numeric parameter.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges only—Polygon features that share a boundary are neighbors.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges corners—Polygon features that share a boundary and/or share a node are neighbors.</bullet_item><para/>
        ///     <bullet_item>Delaunay triangulation—A mesh of nonoverlapping triangles is created from feature centroids; features associated with triangle nodes that share edges are neighbors.</bullet_item><para/>
        ///     <bullet_item>Space time window—Features within a specified critical distance and specified time interval of each other are neighbors.</bullet_item><para/>
        ///     <bullet_item>Convert table—Spatial relationships are defined in a table.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何概念化要素之间的空间关系。</para>
        ///   <bulletList>
        ///     <bullet_item>反距离 - 一个要素对另一个要素的影响随距离的增加而减小。</bullet_item><para/>
        ///     <bullet_item>固定距离 - 每个要素的指定临界距离内的所有内容都包含在分析中;临界距离之外的所有内容都被排除在外。</bullet_item><para/>
        ///     <bullet_item>K 最近邻 - 分析中包括最近 k 个要素;k 是指定的数值参数。</bullet_item><para/>
        ///     <bullet_item>仅邻接边—共享边界的面要素为邻接面要素。</bullet_item><para/>
        ///     <bullet_item>连续性边角 - 共享边界和/或共享节点的面要素是邻居。</bullet_item><para/>
        ///     <bullet_item>Delaunay 三角剖分 - 由要素质心创建非重叠三角形的网格;与共享边的三角形节点关联的要素是邻居。</bullet_item><para/>
        ///     <bullet_item>时空窗口 - 指定临界距离和指定时间间隔内的要素是相邻要素。</bullet_item><para/>
        ///     <bullet_item>转换表 - 在表中定义空间关系。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        public GenerateSpatialWeightsMatrix(object _Input_Feature_Class, object _Unique_ID_Field, object _Output_Spatial_Weights_Matrix_File, _Conceptualization_of_Spatial_Relationships_value? _Conceptualization_of_Spatial_Relationships)
        {
            this._Input_Feature_Class = _Input_Feature_Class;
            this._Unique_ID_Field = _Unique_ID_Field;
            this._Output_Spatial_Weights_Matrix_File = _Output_Spatial_Weights_Matrix_File;
            this._Conceptualization_of_Spatial_Relationships = _Conceptualization_of_Spatial_Relationships;
        }
        public override string ToolboxName => "Spatial Statistics Tools";

        public override string ToolName => "Generate Spatial Weights Matrix";

        public override string CallName => "stats.GenerateSpatialWeightsMatrix";

        public override List<string> AcceptEnvironments => ["geographicTransformations", "outputCoordinateSystem", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_Input_Feature_Class, _Unique_ID_Field, _Output_Spatial_Weights_Matrix_File, _Conceptualization_of_Spatial_Relationships.GetGPValue(), _Distance_Method.GetGPValue(), _Exponent, _Threshold_Distance, _Number_of_Neighbors, _Row_Standardization.GetGPValue(), _Input_Table, _Date_Time_Field, _Date_Time_Interval_Type.GetGPValue(), _Date_Time_Interval_Value, _Use_Z_values.GetGPValue()];

        /// <summary>
        /// <para>Input Feature Class</para>
        /// <para>The feature class for which spatial relationships of features will be assessed.</para>
        /// <para>将评估要素空间关系的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Feature_Class { get; set; }


        /// <summary>
        /// <para>Unique ID Field</para>
        /// <para>An integer field containing a different value for every feature in the input feature class. If you don't have a Unique ID field, you can create one by adding an integer field to your feature class table and calculating the field values to equal the FID or OBJECTID field.</para>
        /// <para>一个整数字段，其中包含输入要素类中每个要素的不同值。如果没有唯一 ID 字段，则可以通过向要素类表添加整数字段并计算字段值以等于 FID 或 OBJECTID 字段来创建一个字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Unique ID Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Unique_ID_Field { get; set; }


        /// <summary>
        /// <para>Output Spatial Weights Matrix File</para>
        /// <para>The full path for the spatial weights matrix file (.swm) you want to create.</para>
        /// <para>要创建的空间权重矩阵文件 （.swm） 的完整路径。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Spatial Weights Matrix File")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Output_Spatial_Weights_Matrix_File { get; set; }


        /// <summary>
        /// <para>Conceptualization of Spatial Relationships</para>
        /// <para><xdoc>
        ///   <para>Specifies how spatial relationships among features are conceptualized.</para>
        ///   <bulletList>
        ///     <bullet_item>Inverse distance—The impact of one feature on another feature decreases with distance.</bullet_item><para/>
        ///     <bullet_item>Fixed distance—Everything within a specified critical distance of each feature is included in the analysis; everything outside the critical distance is excluded.</bullet_item><para/>
        ///     <bullet_item>K nearest neighbors—The closest k features are included in the analysis; k is a specified numeric parameter.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges only—Polygon features that share a boundary are neighbors.</bullet_item><para/>
        ///     <bullet_item>Contiguity edges corners—Polygon features that share a boundary and/or share a node are neighbors.</bullet_item><para/>
        ///     <bullet_item>Delaunay triangulation—A mesh of nonoverlapping triangles is created from feature centroids; features associated with triangle nodes that share edges are neighbors.</bullet_item><para/>
        ///     <bullet_item>Space time window—Features within a specified critical distance and specified time interval of each other are neighbors.</bullet_item><para/>
        ///     <bullet_item>Convert table—Spatial relationships are defined in a table.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何概念化要素之间的空间关系。</para>
        ///   <bulletList>
        ///     <bullet_item>反距离 - 一个要素对另一个要素的影响随距离的增加而减小。</bullet_item><para/>
        ///     <bullet_item>固定距离 - 每个要素的指定临界距离内的所有内容都包含在分析中;临界距离之外的所有内容都被排除在外。</bullet_item><para/>
        ///     <bullet_item>K 最近邻 - 分析中包括最近 k 个要素;k 是指定的数值参数。</bullet_item><para/>
        ///     <bullet_item>仅邻接边—共享边界的面要素为邻接面要素。</bullet_item><para/>
        ///     <bullet_item>连续性边角 - 共享边界和/或共享节点的面要素是邻居。</bullet_item><para/>
        ///     <bullet_item>Delaunay 三角剖分 - 由要素质心创建非重叠三角形的网格;与共享边的三角形节点关联的要素是邻居。</bullet_item><para/>
        ///     <bullet_item>时空窗口 - 指定临界距离和指定时间间隔内的要素是相邻要素。</bullet_item><para/>
        ///     <bullet_item>转换表 - 在表中定义空间关系。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Conceptualization of Spatial Relationships")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Conceptualization_of_Spatial_Relationships_value? _Conceptualization_of_Spatial_Relationships { get; set; }

        public enum _Conceptualization_of_Spatial_Relationships_value
        {
            /// <summary>
            /// <para>Inverse distance</para>
            /// <para>Inverse distance—The impact of one feature on another feature decreases with distance.</para>
            /// <para>反距离 - 一个要素对另一个要素的影响随距离的增加而减小。</para>
            /// </summary>
            [Description("Inverse distance")]
            [GPEnumValue("INVERSE_DISTANCE")]
            _INVERSE_DISTANCE,

            /// <summary>
            /// <para>Fixed distance</para>
            /// <para>Fixed distance—Everything within a specified critical distance of each feature is included in the analysis; everything outside the critical distance is excluded.</para>
            /// <para>固定距离 - 每个要素的指定临界距离内的所有内容都包含在分析中;临界距离之外的所有内容都被排除在外。</para>
            /// </summary>
            [Description("Fixed distance")]
            [GPEnumValue("FIXED_DISTANCE")]
            _FIXED_DISTANCE,

            /// <summary>
            /// <para>K nearest neighbors</para>
            /// <para>K nearest neighbors—The closest k features are included in the analysis; k is a specified numeric parameter.</para>
            /// <para>K 最近邻 - 分析中包括最近 k 个要素;k 是指定的数值参数。</para>
            /// </summary>
            [Description("K nearest neighbors")]
            [GPEnumValue("K_NEAREST_NEIGHBORS")]
            _K_NEAREST_NEIGHBORS,

            /// <summary>
            /// <para>Contiguity edges only</para>
            /// <para>Contiguity edges only—Polygon features that share a boundary are neighbors.</para>
            /// <para>仅邻接边—共享边界的面要素为邻接面要素。</para>
            /// </summary>
            [Description("Contiguity edges only")]
            [GPEnumValue("CONTIGUITY_EDGES_ONLY")]
            _CONTIGUITY_EDGES_ONLY,

            /// <summary>
            /// <para>Contiguity edges corners</para>
            /// <para>Contiguity edges corners—Polygon features that share a boundary and/or share a node are neighbors.</para>
            /// <para>连续性边角 - 共享边界和/或共享节点的面要素是邻居。</para>
            /// </summary>
            [Description("Contiguity edges corners")]
            [GPEnumValue("CONTIGUITY_EDGES_CORNERS")]
            _CONTIGUITY_EDGES_CORNERS,

            /// <summary>
            /// <para>Delaunay triangulation</para>
            /// <para>Delaunay triangulation—A mesh of nonoverlapping triangles is created from feature centroids; features associated with triangle nodes that share edges are neighbors.</para>
            /// <para>Delaunay 三角剖分 - 由要素质心创建非重叠三角形的网格;与共享边的三角形节点关联的要素是邻居。</para>
            /// </summary>
            [Description("Delaunay triangulation")]
            [GPEnumValue("DELAUNAY_TRIANGULATION")]
            _DELAUNAY_TRIANGULATION,

            /// <summary>
            /// <para>Space time window</para>
            /// <para>Space time window—Features within a specified critical distance and specified time interval of each other are neighbors.</para>
            /// <para>时空窗口 - 指定临界距离和指定时间间隔内的要素是相邻要素。</para>
            /// </summary>
            [Description("Space time window")]
            [GPEnumValue("SPACE_TIME_WINDOW")]
            _SPACE_TIME_WINDOW,

            /// <summary>
            /// <para>Convert table</para>
            /// <para>Convert table—Spatial relationships are defined in a table.</para>
            /// <para>转换表 - 在表中定义空间关系。</para>
            /// </summary>
            [Description("Convert table")]
            [GPEnumValue("CONVERT_TABLE")]
            _CONVERT_TABLE,

        }

        /// <summary>
        /// <para>Distance Method</para>
        /// <para><xdoc>
        ///   <para>Specifies how distances are calculated from each feature to neighboring features.</para>
        ///   <bulletList>
        ///     <bullet_item>Euclidean—The straight-line distance between two points (as the crow flies)</bullet_item><para/>
        ///     <bullet_item>Manhattan—The distance between two points measured along axes at right angles (city block); calculated by summing the (absolute) difference between the x- and y-coordinates</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定如何计算从每个要素到相邻要素的距离。</para>
        ///   <bulletList>
        ///     <bullet_item>欧几里得 - 两点之间的直线距离（乌鸦飞翔时）</bullet_item><para/>
        ///     <bullet_item>曼哈顿 - 沿直角轴测量的两点之间的距离（城市街区）;通过将 x 坐标和 y 坐标之间的（绝对）差求和计算得出</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Distance Method")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _Distance_Method_value _Distance_Method { get; set; } = _Distance_Method_value._EUCLIDEAN;

        public enum _Distance_Method_value
        {
            /// <summary>
            /// <para>Euclidean</para>
            /// <para>Euclidean—The straight-line distance between two points (as the crow flies)</para>
            /// <para>欧几里得 - 两点之间的直线距离（乌鸦飞翔时）</para>
            /// </summary>
            [Description("Euclidean")]
            [GPEnumValue("EUCLIDEAN")]
            _EUCLIDEAN,

            /// <summary>
            /// <para>Manhattan</para>
            /// <para>Manhattan—The distance between two points measured along axes at right angles (city block); calculated by summing the (absolute) difference between the x- and y-coordinates</para>
            /// <para>曼哈顿 - 沿直角轴测量的两点之间的距离（城市街区）;通过将 x 坐标和 y 坐标之间的（绝对）差求和计算得出</para>
            /// </summary>
            [Description("Manhattan")]
            [GPEnumValue("MANHATTAN")]
            _MANHATTAN,

        }

        /// <summary>
        /// <para>Exponent</para>
        /// <para>Parameter for inverse distance calculation. Typical values are 1 or 2.</para>
        /// <para>用于反距离计算的参数。典型值为 1 或 2。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Exponent")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _Exponent { get; set; } = 1;


        /// <summary>
        /// <para>Threshold Distance</para>
        /// <para><xdoc>
        ///   <para>Specifies a cutoff distance for Inverse distance and Fixed distance conceptualizations of spatial relationships. Enter this value using the units specified in the environment output coordinate system. Defines the size of the space window for the Space time window conceptualization of spatial relationships.</para>
        ///   <para>A value of zero indicates that no threshold distance is applied. When this parameter is left blank, a default threshold value is computed based on output feature class extent and the number of features.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定空间关系的反距离和固定距离概念化的截止距离。使用环境输出坐标系中指定的单位输入此值。为空间关系的时空窗口概念化定义空间窗口的大小。</para>
        ///   <para>值为零表示未应用阈值距离。如果此参数留空，则将根据输出要素类范围和要素数量计算默认阈值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Threshold Distance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _Threshold_Distance { get; set; } = null;


        /// <summary>
        /// <para>Number of Neighbors</para>
        /// <para>An integer reflecting either the minimum or the exact number of neighbors. For K nearest neighbors, each feature will have exactly this specified number of neighbors. For Inverse distance or Fixed distance, each feature will have at least this many neighbors (the threshold distance will be temporarily extended to ensure this many neighbors, if necessary). When one of the contiguity Conceptualizations of Spatial Relationships is selected, each polygon will be assigned this minimum number of neighbors. For polygons with fewer than this number of contiguous neighbors, additional neighbors will be based on feature centroid proximity.</para>
        /// <para>反映最小或确切邻居数的整数。对于 K 最近邻，每个要素将具有指定数量的相邻要素。对于反向距离或固定距离，每个要素将至少具有如此多的邻居（如有必要，将暂时延长阈值距离以确保拥有如此多的邻居）。选择空间关系的邻接概念化之一时，将为每个多边形分配此最小数量的相邻节点。对于连续邻域数少于此数量的面，其他邻域将基于要素质心邻近度。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of Neighbors")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _Number_of_Neighbors { get; set; } = null;


        /// <summary>
        /// <para>Row Standardization</para>
        /// <para><xdoc>
        ///   <para>Row standardization is recommended whenever feature distribution is potentially biased due to sampling design or to an imposed aggregation scheme.</para>
        ///   <bulletList>
        ///     <bullet_item>Checked—Spatial weights are standardized by row. Each weight is divided by its row sum. This is the default.</bullet_item><para/>
        ///     <bullet_item>Unchecked—No standardization of spatial weights is applied.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>每当特征分布可能由于抽样设计或强加的聚合方案而产生偏差时，建议进行行标准化。</para>
        ///   <bulletList>
        ///     <bullet_item>选中 - 空间权重按行进行标准化。每个权重除以其行总和。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>未选中 - 未应用空间权重的标准化。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Row Standardization")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _Row_Standardization_value _Row_Standardization { get; set; } = _Row_Standardization_value._true;

        public enum _Row_Standardization_value
        {
            /// <summary>
            /// <para>ROW_STANDARDIZATION</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ROW_STANDARDIZATION")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_STANDARDIZATION</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_STANDARDIZATION")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Input Table</para>
        /// <para>A table containing numeric weights relating every feature to every other feature in the input feature class. Required fields are the Input Feature Class, Unique ID field, NID (neighbor ID), and WEIGHT.</para>
        /// <para>包含将每个要素与输入要素类中的所有其他要素相关联的数值权重的表。必填字段包括输入要素类、唯一 ID 字段、NID（邻居 ID）和 WEIGHT。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Table")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Input_Table { get; set; } = null;


        /// <summary>
        /// <para>Date/Time Field</para>
        /// <para>A date field with a timestamp for each feature.</para>
        /// <para>包含每个要素的时间戳的日期字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date/Time Field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _Date_Time_Field { get; set; } = null;


        /// <summary>
        /// <para>Date/Time Interval Type</para>
        /// <para><xdoc>
        ///   <para>The units to use for measuring time.</para>
        ///   <bulletList>
        ///     <bullet_item>Seconds—Seconds</bullet_item><para/>
        ///     <bullet_item>Minutes—Minutes</bullet_item><para/>
        ///     <bullet_item>Hours—Hours</bullet_item><para/>
        ///     <bullet_item>Days—Days</bullet_item><para/>
        ///     <bullet_item>Weeks—Weeks</bullet_item><para/>
        ///     <bullet_item>Months—30 Days</bullet_item><para/>
        ///     <bullet_item>Years—Years</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>用于测量时间的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>秒 - 秒</bullet_item><para/>
        ///     <bullet_item>分钟 - 分钟</bullet_item><para/>
        ///     <bullet_item>小时 - 小时</bullet_item><para/>
        ///     <bullet_item>天 - 天</bullet_item><para/>
        ///     <bullet_item>周 - 周</bullet_item><para/>
        ///     <bullet_item>月—30 天</bullet_item><para/>
        ///     <bullet_item>年—年</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date/Time Interval Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _Date_Time_Interval_Type_value? _Date_Time_Interval_Type { get; set; } = null;

        public enum _Date_Time_Interval_Type_value
        {
            /// <summary>
            /// <para>Seconds</para>
            /// <para>Seconds—Seconds</para>
            /// <para>秒 - 秒</para>
            /// </summary>
            [Description("Seconds")]
            [GPEnumValue("SECONDS")]
            _SECONDS,

            /// <summary>
            /// <para>Minutes</para>
            /// <para>Minutes—Minutes</para>
            /// <para>分钟 - 分钟</para>
            /// </summary>
            [Description("Minutes")]
            [GPEnumValue("MINUTES")]
            _MINUTES,

            /// <summary>
            /// <para>Hours</para>
            /// <para>Hours—Hours</para>
            /// <para>小时 - 小时</para>
            /// </summary>
            [Description("Hours")]
            [GPEnumValue("HOURS")]
            _HOURS,

            /// <summary>
            /// <para>Days</para>
            /// <para>Days—Days</para>
            /// <para>天 - 天</para>
            /// </summary>
            [Description("Days")]
            [GPEnumValue("DAYS")]
            _DAYS,

            /// <summary>
            /// <para>Weeks</para>
            /// <para>Weeks—Weeks</para>
            /// <para>周 - 周</para>
            /// </summary>
            [Description("Weeks")]
            [GPEnumValue("WEEKS")]
            _WEEKS,

            /// <summary>
            /// <para>Months</para>
            /// <para>Months—30 Days</para>
            /// <para>月—30 天</para>
            /// </summary>
            [Description("Months")]
            [GPEnumValue("MONTHS")]
            _MONTHS,

            /// <summary>
            /// <para>Years</para>
            /// <para>Years—Years</para>
            /// <para>年—年</para>
            /// </summary>
            [Description("Years")]
            [GPEnumValue("YEARS")]
            _YEARS,

        }

        /// <summary>
        /// <para>Date/Time Interval Value</para>
        /// <para><xdoc>
        ///   <para>An integer reflecting the number of time units comprising the time window.</para>
        ///   <para>For example, if you select HOURS for the Date/Time Interval Type and 3 for the Date/Time Interval Value, the time window would be 3 hours; features within the specified space window and within the specified time window would be neighbors.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>一个整数，反映构成时间窗口的时间单位数。</para>
        ///   <para>例如，如果为“日期/时间间隔类型”选择“小时”，为“日期/时间间隔值”选择“3”，则时间窗口将为 3 小时;指定空间窗口内和指定时间窗口内的要素将是邻居。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Date/Time Interval Value")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long? _Date_Time_Interval_Value { get; set; } = null;


        /// <summary>
        /// <para>Use Z values</para>
        /// <para><xdoc>
        ///   <para>When input features are z-enabled, you have the option to use or ignore the z-values. Specifies whether z-coordinates are included in the construction of the spatial weights matrix.</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>Checked—Z-values are used in the construction of the spatial weights matrix.</bullet_item><para/>
        ///       <bullet_item>Unchecked—Z-values are ignored and only X and Y coordinates are considered in the construction of the spatial weights matrix. This is the default.</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>启用 z 值的输入要素后，可以选择使用或忽略 z 值。指定是否在空间权重矩阵的构造中包括 z 坐标。</para>
        ///   <para>
        ///     <bulletList>
        ///       <bullet_item>选中 - Z 值用于构造空间权重矩阵。</bullet_item><para/>
        ///       <bullet_item>未选中 - 在构造空间权重矩阵时，将忽略 Z 值，并且仅考虑 X 和 Y 坐标。这是默认设置。</bullet_item><para/>
        ///     </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Use Z values")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _Use_Z_values_value? _Use_Z_values { get; set; } = null;

        public enum _Use_Z_values_value
        {
            /// <summary>
            /// <para>USE_Z_VALUES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("USE_Z_VALUES")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DO_NOT_USE_Z_VALUES</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DO_NOT_USE_Z_VALUES")]
            [GPEnumValue("false")]
            _false,

        }

        public GenerateSpatialWeightsMatrix SetEnv(object geographicTransformations = null, object outputCoordinateSystem = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}